<?php
// +----------------------------------------------------------------------
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2017 http://www.thinkcmf.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +---------------------------------------------------------------------
// | Author: Dean <zxxjjforever@163.com>
// +----------------------------------------------------------------------
namespace cmf\controller;

use think\Controller;
use think\Request;
use think\View;
use think\Config;

class BaseController extends Controller
{
    /**
     * 构造函数
     * @param Request $request Request对象
     * @access public
     */
    public function __construct(Request $request = null)
    {
        if (!cmf_is_installed() && $request->module() != 'install') {
            header('Location: ' . cmf_get_root() . '/?s=install');
            exit;
        }

        if (is_null($request)) {
            $request = Request::instance();
        }

        $this->request = $request;

        /************************************* 多站点和手机版 2018/04/24 *************************************/ 

            $siteId       = 1;    //默认站点ID
            $cookieSiteId = cookie('SITE_ID');

            //根据域名判断当前站点
            $host   = strtolower($_SERVER['HTTP_HOST']);
            $domain = require CMF_ROOT.'data/conf/domain.php'; // 加载站点域名配置文件

            // 站点是否有单独域名
            if( isset($domain[$host]) ){
                //当前域名对应的站点ID
                $siteId = $domain[$host];
                
                if( empty($cookieSiteId) ){
                    cookie('SITE_ID',$siteId,86400);
                }
            }else{
                //url是否有传递站点id参数
                $paramSiteId = $this->request->param('site',0,'intval');
                if( !empty($paramSiteId) ){
                    // 站点是否存在
                    if( check_site_exist($paramSiteId) ){
                        $siteId = $paramSiteId;
                    }
                    cookie('SITE_ID', $siteId, 86400);
                }else{
                    if( empty($cookieSiteId) ){
                        cookie('SITE_ID',$siteId,86400);
                    }
                }
            }

            // 若不是默认站点
            if( $siteId != 1 ){
                // pc版模版，查询要使用的模版(查询数据库或读取站点配置文件两种方式)
                /*********************************** 查数据库方式 ***********************************/ 
                $defaultTheme = db('site')->where('site_id', $siteId)->value('default_theme');
                /*********************************** 查数据库方式 ***********************************/ 

                /*********************************** 读取文件方式 ***********************************/
                    // $defaultTheme = '';
                    // //当前站点配置文件所在位置
                    // $siteFilePath = CMF_ROOT.'data/conf/site/'.$siteId.'.php';

                    // //若配置文件存在
                    // if( is_file($siteFilePath) ){
                    //     $siteConfig = require $siteFilePath;    // 加载站点配置文件
                    //     if( !empty($siteConfig) ){
                    //         if( $siteConfig['cmf_default_theme'] ){
                    //             $defaultTheme = $siteConfig['cmf_default_theme'];
                    //         }
                    //     }
                    // }
                /*********************************** 读取文件方式 ***********************************/
            }

            // 手机访问
            if( cmf_is_mobile() ){
                $siteInfo = cmf_get_site_info($siteId);
                // 手机版模版
                if( !empty($siteInfo['wap_thems']) ){
                    $defaultTheme = $siteInfo['wap_thems'];
                }
            }
            
            //动态设置默认模版配置
            if( isset($defaultTheme) ){
                config('cmf_default_theme', $defaultTheme);
            }
        /************************************* 多站点和手机版 2018/04/24 *************************************/ 
   
    
        $this->_initializeView();
        $this->view = View::instance(Config::get('template'), Config::get('view_replace_str'));

        // 控制器初始化
        $this->_initialize();

        // 前置操作方法
        if ($this->beforeActionList) {
            foreach ($this->beforeActionList as $method => $options) {
                is_numeric($method) ?
                    $this->beforeAction($options) :
                    $this->beforeAction($method, $options);
            }
        }
        
        $this->assign('lang', lang(''));
    }


    // 初始化视图配置
    protected function _initializeView()
    {
    }

    /**
     *  排序 排序字段为list_orders数组 POST 排序字段为：list_order
     */
    protected function listOrders($model)
    {
        if (!is_object($model)) {
            return false;
        }

        $pk  = $model->getPk(); //获取主键名称
        $ids = $this->request->post("list_orders/a");

        if (!empty($ids)) {
            foreach ($ids as $key => $r) {
                $data['list_order'] = $r;
                $model->where([$pk => $key])->update($data);
            }

        }

        return true;
    }

    /**
     *  审核 审核字段为post_status,ids数组=主键值
     */
    protected function passStep($model, $status, $field='post_status')
    {
        if (!is_object($model)) {
            return false;
        }

        $pk  = $model->getPk(); //获取主键名称
        $ids = $this->request->post("ids/a");

        if (!empty($ids)) {
            foreach ($ids as $key => $val) {
                $data[$field] = $status;
                
                $model->where([$pk => $val])->update($data);
            }

        }else{
            $this->error("您没有勾选信息，无法进行操作！");
        }

        return true;
    }

}
